//872. 叶子相似的树
//思路：用两个数组将两棵树的叶子节点值保存起来
//如果保存的元素个数不相同，就返回false
//对比两个数组的元素，如果相同位置的数字不相同就返回false
//遍历完整个数组都相同就返回true

#include <stdbool.h>
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
};

void dfs(struct TreeNode* root, int* arr, int* index)
{
    if(!root) return;

    if(!root->left && ! root->right)
        arr[(*index)++] = root->val;
    
    dfs(root->left, arr, index);
    dfs(root->right, arr, index);
}
bool leafSimilar(struct TreeNode* root1, struct TreeNode* root2)
{
    int arr1[200] = {0};
    int i = 0;
    dfs(root1, &arr1, &i);

    int arr2[200] = {0};
    int j = 0;
    dfs(root2, &arr2, &j);

    if(i != j)
        return false;
    
    for(int k = 0; k < i; k++)
    {
        if(arr1[k] != arr2[k])
            return false;
    }
    return true;
}